/**  
* @author renbangjie renbangjie@126.com  
* @date 2015年12月9日 下午8:11:55
* @version V1.0  
*  
*/
package com.ai.common.core.service;

import java.util.List;

import com.ai.common.core.base.DTO;
import com.ai.common.core.pager.model.PagerModel;
import com.ai.common.model.Pagination;

/**
* 业务类基类
* @author renbangjie renbangjie@126.com
* @date 2015年12月9日 下午8:11:55
*/
public interface IBaseService<T> {

	/**
	 * 根据主键查询
	* @date 2015年12月9日 下午8:24:22
	* @param primaryKey
	* @return
	* T
	 * @throws Exception 
	 */
	public T getByPrimaryKey(Object primaryKey) throws Exception;
	
	/**
	 * 一条数据
	* @date 2015年12月9日 下午8:24:33
	* @param paramMap
	* @return
	* T
	 * @throws Exception 
	 */
	public T getOne(DTO dto) throws Exception;
	
	/**
	 * 查询多条数据
	* @date 2015年12月9日 下午8:25:14
	* @param paramMap
	* @return
	* List<T>
	 * @throws Exception 
	 */
	public List<T> getList(DTO dto) throws Exception;
	
	/**
	 * 查询总数
	* @date 2015年12月13日 下午4:09:01
	* @param paramMap
	* @return
	* int
	 * @throws Exception 
	 */
	public Integer getListCount(DTO dto) throws Exception;
	
	/**
	 * 分页查询
	* @date 2015年12月9日 下午8:25:28
	* @param paramMap
	* @return
	* PagerModel
	 * @throws Exception 
	 */
	public PagerModel<T> getPagerModel(DTO dto) throws Exception;
	
	/**
	 * 分页 
	* @date 2016年6月25日 下午7:52:04
	* @param dto
	* @return Pagination<T>
	* @throws Exception
	 */
	public Pagination<T> getPagination(DTO dto) throws Exception;
	
	
	/**
	 * 插入
	* @date 2015年12月9日 下午8:26:17
	* @param model
	* @return
	* T
	 * @throws Exception 
	 */
	public T insert(T model) throws Exception;
	
	/**
	 * 根据主键删除
	* @date 2015年12月9日 下午8:26:27
	* @param primaryKey
	* @return
	* int
	 * @throws Exception 
	 */
	public void deleteByPrimaryKey(Object primaryKey) throws Exception;
	
	/**
	 * 根据主键更新
	* @date 2015年12月9日 下午8:26:39
	* @param model
	* @return
	* int
	 * @throws Exception 
	 */
	public void updateByPrimaryKey(T model) throws Exception;
	
}
